package com.kingyun.gpsinspection.purificationservice.dao.mapper.jsm;


import com.kingyun.gpsinspection.purificationservice.facade.model.jsm.Device;
import com.kingyun.gpsinspection.purificationservice.facade.model.jsm.DeviceVo;
import com.kingyun.gpsinspection.purificationservice.facade.model.jsm.EntityPro;

import java.util.List;
import java.util.Map;

/**
 * @author YuPeng
 */
public interface EntityProMapper {


    /**
     * 根据orgId查询集合
     *
     * @param orgId
     * @return
     * @Author 卢曼成
     * @CreateDateTime 2017/6/6 13:59
     */
    List<EntityPro> selectByOrgEntity(String orgId);
    /**
     * 按特性ID删除特性
     * @param devicePropertyId
     * @return
     */
    int deleteByPrimaryKey(String devicePropertyId);

    /**
     * 新增特性
     * @param record
     * @return
     */
    int insert(EntityPro record);

    /**
     * 新增特性
     * @param record
     * @return
     */
    int insertSelective(EntityPro record);

    /**
     * 获取特性详情
     * @param devicePropertyId
     * @return
     */
    EntityPro selectByPrimaryKey(String devicePropertyId);


    /**
     * 查询实体特性详情
     * @param entityPro
     * @return
     */
    EntityPro selectByEntityPro(EntityPro entityPro);

    /**
     * 修改特性
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(EntityPro record);

    /**
     * 修改特性
     * @param record
     * @return
     */
    int updateByPrimaryKey(EntityPro record);

    /**
     * 根据设备或者实体查询特性值
     * @param
     * @return
     */
    List<EntityPro> selectByDevice(Device device);

    /**
     * 按设备查找特性数量
     * @param device
     * @return
     */
    int selectCountByDevice(Device device);

    /**
     * 批量删除特性
     * @param proList
     * @return
     */
    int delByDeviceProIds(List<String> proList);

    /**
     * 单个删除特性
     * @param devicePropertyId
     * @return
     */
    int delByDeviceProId(String devicePropertyId);
    /**
     * 批量新增特性
     * @param enProList
     * @return
     */
    int insertBatchSelective(List<EntityPro> enProList);

    /**
     * 根据实体ID 或者 设备ID 查询特性值
     * @param entityPro
     * @return
     */
    int queryEntityProCount(EntityPro entityPro);
    /**
     * 根据实体ID 或者 设备ID 查询特性值
     * @param entityPro
     * @return
     */
    List<EntityPro> queryEntityProList(EntityPro entityPro);


    /**
     * 删除实体对应特性
     * @param entityId
     * @return
     */
    int deleteDeviceProByEntityId(String entityId);

    /**
     * 得到实体对应的特性
     * @param entityId
     * @return
     */
    List<EntityPro> getEntityProByEntityId(String entityId);

    /**
     * 根据实体id查询特性值
     * @param map
     * @return
     */
    List<EntityPro> selectByEntityIds(Map map);


    /**
     * 得到数据项关联的特性
     * @param entityPro
     * @return
     */
    List<EntityPro> queryEntityProOfDataItemList(EntityPro entityPro);

    /**
     *得到数据项关联的数量
     * @param entityPro
     * @return
     */
    Integer queryEntityProOfDataItemCount(EntityPro entityPro);


    /**
     * 删除实体特性
     * @param devicePropertyId
     * @return
     */
    Integer delEnProperty(String devicePropertyId);

    /**
     * @param param
     * @return List<EntityPro>
     * @Description 根据用户orgId查询所属所有特性集合
     * @Author 卢曼成
     * @CreateDateTime 2017/5/3 17:05
     */
    List<EntityPro> selectByEntityList(EntityPro param);

    /**
     * @param param
     * @return List<String>
     * @Description 根据用户orgId查询去重ORGID集合
     * @Author 卢曼成
     * @CreateDateTime 2017/5/3 17:05
     */
    List<String> selectByEntityListCode(EntityPro param);


    /**
     * 获取特性值详情
     * @param devicePropertyId
     */
    EntityPro queryByPropertyId(String devicePropertyId);



    /**
     *
     * @param entityPro
     * @return
     */
    int queryEntityProTableCount(EntityPro entityPro);

    List<EntityPro> queryEntityProTableList(EntityPro entityPro);


    List<EntityPro> queryPropertyByDeviceIds(List<DeviceVo> list);
}